package com.disktalk.dao;

import javax.annotation.Resource;

import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import com.disktalk.entry.DiskUser;

@Repository
public class DiskUserDao {
	@Resource
	private JdbcTemplate jdbcTemplate;

	public void addDiskUser(DiskUser diskUser) {
		String sql = "insert into diskUser(userName,userCnName,userFlag,password,phone,email,firstDate,lastDate,maxSpace,usedSpace,extra1,extra2,extra3,extra4,extra5) "
				+ "values (?,?,0,?,?,?,NOW(),NOW(),500,0,0,0,0,0,0)";
		Object[] params = { diskUser.getUserName(), diskUser.getUserCnName(), diskUser.getPassword(),
				diskUser.getPhone(), diskUser.getEmail() };
		this.jdbcTemplate.update(sql, params);
	}

	public void delDiskUser(String userName) {
		String sql = "delete from diskUser where userName=?";
		Object[] params = { userName };
		this.jdbcTemplate.update(sql, params);

	}

	public void updateUser(DiskUser diskUser) {
		String sql = "update diskUser set userCnName=?,password=?,phone=?,email=? where userName=?";
		Object[] params = { diskUser.getUserCnName(), diskUser.getPassword(), diskUser.getPhone(), diskUser.getEmail(),
				diskUser.getUserName() };
		this.jdbcTemplate.update(sql, params);
	}

	public DiskUser findByUserName(String userName) {
		String sql = "select * from diskUser where userName=?";
		DiskUser diskUser = null;
		try {
			Object[] params = { userName };
			diskUser = (DiskUser) this.jdbcTemplate.queryForObject(sql, params,
					new BeanPropertyRowMapper(DiskUser.class));
		} catch (DataAccessException e) {
			e.printStackTrace();
		}
		return diskUser;
	}

	public boolean login(String userName, String password) {
		DiskUser diskUser = this.findByUserName(userName);
		if (userName != null && password.equals(diskUser.getPassword())) {
			return true;
		}
		return false;
	}

	public DiskUserDao(JdbcTemplate jdbcTemplate) {
		super();
		this.jdbcTemplate = jdbcTemplate;
	}

	public JdbcTemplate getJdbcTemplate() {
		return jdbcTemplate;
	}

	public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}
}
